import sys

sys.setrecursionlimit(10000000)

if __name__ == '__main__':
    n = int(input())
    s = input()
    s = s.split(' ')
    arr = []
    for i in range(n):
        arr.append(int(s[i]))
    max_bit = 21  # Since arr[i] <= 2^20
    ans = 0

    for bit in range(max_bit):#从低位向高位遍历
        cnt0 = 0  # 个数 of bit=0
        cnt1 = 0  # 个数 of bit=1
        sum0 = 0  # 下标和 for bit=0
        sum1 = 0  # 下标和 for bit=1

        for i in range(n):#遍历每个整数的二进制表示的第bit位
            b = (arr[i] >> bit) & 1 #通过右移得到了当前bit位的二进制表示
            # 任何一个十进制数和1做与运算，得到的是其二进制表示中的最低位
            if b == 0:
                # 当前位置是0，和前面（i之前其他同样是数组中的数）所有1异或为1
                ans += ((cnt1 * i - sum1) * (1 << bit)) #实际上，cnt1 * i - sum1是所有（i-j)的和,sum1是所有j的和，cnt1（对数） * i是所有i的和
                cnt0 += 1
                sum0 += i
            else:
                # 当前是1，和前面所有0异或为1
                ans += ((cnt0 * i - sum0) * (1 << bit)) #计算每一位来累加求和
                cnt1 += 1
                sum1 += i
    print(ans)